// ColorContourModel.h

#ifndef COLORCONTOURMODEL_H_
#define COLORCONTOURMODEL_H_

#include <stdio.h>
#include <fstream>
#include <string>
#include <boost/algorithm/string.hpp>
#include <boost/lexical_cast.hpp>
#include <vector>
#include "DebugHelper.h"

namespace Voltron
{
	
	class ColorContourModel
	{
	
		private:
		
		// Private Constructors
		// Private Destructor
		// Private properties
		// Private members

		protected:
		
		// Protected Constructors
		// Protected Destructor
		// Protected properties
		// Protected members
				
		public:
		// Public Constructors
		ColorContourModel();
		ColorContourModel(string filename);
		
		// Public Destructor
		~ColorContourModel();
	
		// Public properties
		// A global constant for the number of points that will be in our object.
		//const int NumPoints = 21600;
		const int NumPoints = 21600 * 6;

        vector< vector<float>> *data;
	    vector<vector<int>> *discreteData;
	    vec3*	coolers;
	    vec2*	vertices;
	        //vec3 * vertices = makeVertices(data.size(),data[0].size());		
	
		// Public members

		vector<vector<float>>	ColorContourModel::readDataSet(string dataSetText);
		vector<vector<int>>	ColorContourModel::discretizeData(vector <vector <float> > data, int numBuckets);
		void	ColorContourModel::HSVtoRGB(float hsv[3], float rgb[3]);
		vec3*	ColorContourModel::discreteToRGB(vector< vector<int> > data,int numRows,int numCols);
		vec3*	ColorContourModel::makeVertices(int m,int n);
		vec2*	ColorContourModel::makeVertices_1(int numRows, int numColumns);
 
	};
}

#endif